/**
 * Appversiondetail Appversiondetail
 * @author ice1938@qq.com 2019-11-28 14:13:14  
 *
 */

$(document).ready(function($) {
	obj.init();
	obj.drawDatatable();
	obj.create_validator();
	uploader.init();});

var tt=null;
var validator =null;
var obj = {
drawDatatable : function(data) {
	if (tt != null) {
		return;
	}
	var opt = {
		// paging : true,
		// lengthMenu: [[5, 10, -1], [5, 10, "All"]],
		// lengthChange : false,
		pageLength : 10,
		pagingType : 'numbers',//numbers,simple,simple_numbers,full,full_numbers,first_last_numbers
		searching : false,
		info : true,
		scrollCollapse : true,
		autoWidth : true,
		processing : true,
		serverSide : true,
		dom : 'tipl',
		ordering : true,
		order : [ [ 2, 'desc' ] ],
		paging : true,
		searching : false,
		language : {
			url : $('#datatables_i18n').prop("src")
		},
		ajax : {
			type : 'post',
			url : $('#search_btn').data('href'),
			data : function(d) {
				//serializeObj 框架自扩展
				var param = $("#searchForm").serializeObj();
				$.extend(d,param);
			}
		},
		//第一列显示行号
		rowCallback : function(row, data, index) {
			var info = tt.page.info();
			if (typeof (info) != 'undefined') {
				$('td:eq(0)', row).html(index + info.start + 1);
			} else {
				$('td:eq(0)', row).html(index + 1);
			}
		},
		rowId : 'appMd5',
		columns : columns
	};
	
	tt = $('#tt').DataTable(opt);
	$('#tt').data('cur_row_id',[]);
	//注册表格事件
	$('#tt').on('draw.dt', function(e) {
         
        if ($.isArray($('#tt').data('cur_row_id'))) {
        	for (i= 0; i<$('#tt').data('cur_row_id').length;i++){
        		var id= $('#tt').data('cur_row_id')[i];
        		$('#tt #' + id).addClass('selected');
        	}
		} 
	});
	// 绑定单击事件切换行样式
	$('#tt tbody').on('click', 'tr', function(e) {
			//反向选择 $(this).toggleClass('selected');
		if (e.target.type == 'button'){
			if (!$(this).hasClass('selected')){
				tt.$('tr.selected').removeClass('selected');
				$(this).addClass('selected');
				$('#tt').data('cur_row_id',tt.row(this).id());
				var ids = [];
	    		ids.put(tt.row($(this).parents('tr')).id());
	    		$('#tt').data('cur_row_id',ids);
			}
		}
	});
	$('#tt tbody').on('click', '#edit_btn', function(e) {
		var cur_data = tt.row($(this).parents('tr')).data();
		$('#form_modal').data('href', $(e.target).data('href'));
       
        //版本名称
        $("#form_modal #versionName").val(cur_data.versionName);
        //更新时间
        $("#form_modal #updateTime").val(cur_data.updateTime);
        //图片MD5
        $("#form_modal #img1Md5").val(cur_data.img1Md5);
        //图片MD5
        $("#form_modal #img2Md5").val(cur_data.img2Md5);
        //图片MD5
        $("#form_modal #img3Md5").val(cur_data.img3Md5);
        //图片MD5
        $("#form_modal #img4Md5").val(cur_data.img4Md5);
        //图片MD5
        $("#form_modal #img5Md5").val(cur_data.img5Md5);
		$('#form_modal').modal('show');
	});
	var deleteBtnHandler = function(e){
		$('#remove_modal').data('href', $(e.target).data('href'));
		var cur_data = tt.row($(this).parents('tr')).data();
		$('#remove_modal').data('info',[cur_data]);
		$('#remove_modal').modal('show');
	};
	$('#tt tbody').on('click', '#delete_btn', deleteBtnHandler);
	
	//下载
	$('#tt tbody').on('click', '#download_btn', function(e){
		var cur_data = tt.row($(this).parents('tr')).data();
		var url = $(e.target).data('href')+"?appVersionKey="+cur_data['id'];
		window.open(url);
	});
},
init : function() {
 	$(".form_datetime").datetimepicker({
        format : "yyyy-mm-dd hh:ii:ss",
        autoclose : true,
        todayBtn : true,
        language : 'zh-CN'
    });
	// 删除 和 添加事件
	$("#add_btn").on("click", function(e) {
		$('#form_modal').data('href', $(e.target).data('href'));
         //APPMD5
        $("#form_modal #appMd5").val('');
         //app_package
        $("#form_modal #appPackage").val('');
         //应用名称
        $("#form_modal #appName").val('');
         //评分
        $("#form_modal #score").val('');
         //下载数
        $("#form_modal #downloadCount").val('');
         //广告标识
        $("#form_modal #adFlag").val('');
         //版本号
        $("#form_modal #versionCode").val('');
         //版本名称
        $("#form_modal #versionName").val('');
         //更新时间
        $("#form_modal #updateTime").val('');
        
		$('#form_modal').modal('show');
	});
	// 删除 和 添加事件
	$("#batch_delete_btn").on("click", function(e) {
		$('#remove_modal').data('href', $(e.target).data('href'));
		$('#remove_modal').data('info',tt.rows('.selected').data());
		$('#remove_modal').modal('show');
	});
	// 查询按钮事件
	$("#search_btn").on("click", function(e) {
		//防止重复提交
		$(e.target).prop("disabled", true);
    	tt.clear();
    	//重置分页记录
    	tt.ajax.reload(function() {
            $(e.target).prop("disabled", false);
        }, false);
	});
	//export_xlsx_btn导出按钮
	$("#export_xlsx_btn").on("click", function(e) {
		var url =  $(e.target).data('href');
		$(this).prop("disabled", true);
		var params = $("#searchForm").serializeObj()
		params.fileName = 'eee';
		window.open(url + '?' + $.param(params));
		$(this).prop("disabled", false);
	});
	/** 页面定义控件（非JS框架生成的控件）事件注册和定义函数 */
	// 编辑&增加 窗口显示之前恢复验证状态
	$('#form_modal').on('show.bs.modal', function() {
		// 把前面验证的 FORM 恢复到验证前原来的状态 
		if( validator == null){
		   obj.create_validator();
		} else {
		   validator.resetForm();
		}
	});
	// 编辑&增加 窗口shown 事件行为
	$('#form_modal').on('shown.bs.modal', function() {
		// $("#department_workshop_" + flag).val('').trigger("change.select2");
		// $("#department_workshop_" + flag).scombobox('val','');
	});

    // 编辑&增加保存按钮事件
    $("#form_modal #confirm_btn").on("click", function(e) {
        //验证 form 返回成功还是失败。
      	if(!validator.form()){
			return;
		}
		var data = {}
        data.appPackage=$("#form_modal #appPackage").val();//app_package
        data.versionCode=$("#form_modal #versionCode").val();//版本号
        data.img1Md5=$("#form_modal #img1Md5").val();//图片MD5
        data.img2Md5=$("#form_modal #img2Md5").val();//图片MD5
        data.img3Md5=$("#form_modal #img3Md5").val();//图片MD5
        data.img4Md5=$("#form_modal #img4Md5").val();//图片MD5
        data.img5Md5=$("#form_modal #img5Md5").val();//图片MD5
		$.ajax({
    		url : $('#form_modal').data('href'),
    		type : 'POST',
    		//scriptCharset : 'utf-8',
    	    data : JSON.stringify(data),
    		//dataType : 'json',
    		contentType : "application/json",
    		beforeSend:function(xhr){
			 	$(e.target).prop("disabled", true);
			},
			complete : function(xhr,status) {
                $(e.target).prop("disabled", false);
            },
    		success : function(data) {
    			$('#search_btn').trigger('click');
				$.dialog.tips(data.message,5);
    			$('#form_modal').modal('hide');
    		},
    		error : ajaxerror
    	});
	});

	// 删除 窗口shown 事件行为
	$('#remove_modal').on('show.bs.modal',function() {
		// 获得选中行数据
		var data = $('#remove_modal').data('info');
		var rowdatalength = data.length;
		if (rowdatalength == 0) {
			$('#remove_modal .modal-body').html('请选择一条进行删除.');
			return;
		} else {
			var infos = '';
			for (var i = 0; i < rowdatalength; i++) {
				// TODO infos += '['+data[i].title+'] ';
				infos += '[' + data[i].appMd5 + '] ';
			}
			$('#remove_modal .modal-body').html(
					'您确定要删除么(' + infos + ')?');
			return;
		}
	});
	// 批量删除按钮事件
	$("#remove_modal #confirm_btn").on("click", function(e) {
		var ids = [];
		var data = $('#remove_modal').data('info');//tt.rows('.selected').data();
		if(data.length== 0){
		    return;
		}
		for (var i = 0; i < data.length; i++) {
			ids.push(data[i].id);
		}
		// var ids = tt.rows().ids();
		$.ajax({
			type : 'post',
			url : $("#remove_modal").data('href'),
			data : JSON.stringify(ids),
			//dataType : 'json',
			contentType : "application/json",
			/*data : {
				data:JSON.stringify(ids)
			},*/
			beforeSend:function(xhr){
			 	$(e.target).prop("disabled", true);
			},
			complete : function(xhr,status) {
                $(e.target).prop("disabled", false);
            },
			success : function(data) {
				$('#remove_modal').modal('hide');
			    $.dialog.tips(data.message,5);
        	    $('#search_btn').trigger('click');
            },
            error : ajaxerror
           });
        //tt.row('.selected').remove().draw(false);
		});
	},

	/**
	 * 创建验证控件
	 */
	create_validator : function() {
		validator = $("#form_modal form").validate({
		// 提交时验证。设置为 false 就用其他方法去验证
		onsubmit : false,
		rules : {
			},
			messages : {}
		});
	}
};
var stompClient = null;
var stomp_socket = {
	stopHandler : function() {
        if (stompClient != null) {
            stompClient.disconnect();
        }
        stompClient = null;
    },
    startHandler : function() {
        if (stompClient == null) {
            var socket = new SockJS($('#uploadmsg').data('stomp_socket_endpoint'));
            stompClient = Stomp.over(socket);
        }
    },
};
// 上传按钮
var uploader = new plupload.Uploader({
    runtimes : 'html5,flash,html4',
    browse_button : 'upload_btn', //
    container : 'container', // 
    url : $('#upload_btn').data('href'),
    flash_swf_url : $('#upload_btn').data('flash_swf_url'),
    filters : {
        max_file_size : '100mb',
        mime_types : [ {
            title : "apk 文件",
            extensions : "apk"
        } ]
    },

    init : {

        Init : function() {
            $('#upload_btn').on('click', function(e) {
                $('#upload_btn').prop("disabled", true);
                stomp_socket.startHandler();
                stompClient.connect({}, function connectCallback(frame) {
                    stompClient.subscribe('/topic/appversiondetail_uploadmsg', function(response) {
                        var data = JSON.parse(response.body);
                        if (data.complete === false) {
                            $('#uploadmsg #' + data.fileName+' p').prepend('<span>' + data.message + '</span><br>');
                        } else if (data.complete === true) {
                            $('#upload_btn').prop("disabled", false);
                        }
                    });
                }, function errorCallBack(error) {
                    stomp_socket.startHandler();
                });
            });
        },
        PostInit : function() {
            // $('#uploadmsg .modal-body').html('');
        },
        BeforeUpload : function(up, file) {
            up.setOption('multipart_params', {
                fileId : file.id
            })
            $('#uploadmsg').modal('show');
        },
        FilesAdded : function(up, files) {
            var callback = function(file) {
                var html = '<div id="';
                html += file.id;
                html += '">';
                html += file.name;
                html += ' (';
                html += plupload.formatSize(file.size);
                html += ')<b></b><p></p><br></div>'
                $('#uploadmsg .modal-body').append(html);
            };
            plupload.each(files, callback);
            up.start();
        },
        UploadProgress : function(up, file) {
            var html = '<span>' + file.percent + "%</span>";
            $('#' + file.id + ' b').html(html)
        },
        UploadComplete : function(up, files) {
        	 $('#upload_btn').prop("disabled", false);
        	 $('#uploadmsg').modal('hide');
        },

        Error : function(up, err) {
            $('#uploadmsg .modal-body').text("\nError #" + err.code + ": " + err.message);
            $('#upload_btn').prop("disabled", false);
        }
    }
});
